任何一位曾经在过去的四五年间使用Netscape Navigator浏览器的用户都清楚浏览器可以接受并显示那些使用不同字符集的HTML网页。从支持最初的US-ASCII规则,到更新的ISO-8859-1标准,从各种扩展字符集到双字符信息,各种浏览器在几年间已经发展成为一套可以显示各种数据信息的灵活工具。但不幸地是,到目前为止,网络服务器并没有跟上浏览器发展的速度,只接受一部分字符集。甚至直到最近,网络服务器系统才允许在HTTP/MIME握手过程中由网管对默认字符集进行设置。
下面,为了能够让广大读者对MIME握手有一个初步的了解,我将对此进行一下简单的解释。全世界的CGI编程人员都非常清楚一点,那就是在服务器反馈他们发送的脚本信息之前,必须首先反馈一条MIME题头。这个HTTP格式的题头的作用是通知浏览器应对其即将接收的数据信息采取哪种处理方式。如果这个题头是普通文本类型"text/plain",那么浏览器就将把接收的数据显示为最基本的ASCII纯文本,而如果题头采用HTML文本格式"text/html",那么浏览器就会显示出一个HTML格式的网页。依此类推,浏览器就可以显示各种类型的信息了。
但有一点你可能并不清楚,那就是MIME仅能针对多媒体信息类型(如HTML、纯文本、mp3数据流的版权违反信息等),它需要由浏览器来决定应该使用哪种相应的字符集,这个决定的过程将主要基于用户的喜好、浏览器的功能,以及字符集设置器的具体设置。许多Netscape Navigator用户基本上都会有过一些痛苦的经历,如在显示Flash信息时,原作者要求用"meta"元素来显示信息,但Netscape却强行采用默认的字符集来显示该信息,而当浏览器发现应采用特殊的设置来显示该信息后,才忙不迭地再按作者的要求使用"meta"置标符设置来显示,结果显示出来的内容自然是没法让人欣赏了,并且显示速度也无法让人忍受。
对此问题的解决方法是或许我们可以把字符集设置信息放置在HTTP编码中"Content-type"题头中,例如最近发布的Apache浏览器附件就针对前面我们提到的问题,给与了修正。
具体方法是向网页原代码中添加由函数"ap_send_error_response()"生成的charset=iso-8859-1设置信息,并添加"AddDefaultCharset"和 "AddDefaultCharsetName"这两项指令,它们的功能是指示Apache浏览器附件针对那些题头中没有特殊设定字符集的网页,让浏览器采用其预设的字符集进行显示。
经过这样的修改,显示效果有了一定的改善,但是不是就没有任何其它问题了呢?
|